{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "fbd107d4-6efb-4307-ad63-5c417e490a1a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Document(metadata={'source': 'loader.md'}, page_content='# 我是一个markdown加载示例\\n- 第一项目\\n- 第二个项目\\n- 第三个项目\\n\\n## 第一个项目\\nAI研习社最厉害专业的AI研究基地\\n\\n## 第二个项目\\nAIGC打造未来AI应用天地\\n\\n## 第三个项目\\nAI研习社是一个非常牛逼的AI媒体')]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用loader加载markdown文件\n",
    "from langchain.document_loaders import TextLoader\n",
    "\n",
    "loader = TextLoader(\"loader.md\", encoding=\"utf-8\")\n",
    "loader.load()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "903760f8-ecb1-46c4-a399-de4da12023e9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Document(metadata={'source': 'loader.csv', 'row': 0}, page_content='\\ufeffProject: AI GC培训\\nDES: 培训课程\\nPrice: 500\\nPeople: 100\\nLocation: 北京'), Document(metadata={'source': 'loader.csv', 'row': 1}, page_content='\\ufeffProject: AI工程师认证\\nDES: 微软AI认证\\nPrice: 6000\\nPeople: 200\\nLocation: 西安'), Document(metadata={'source': 'loader.csv', 'row': 2}, page_content='\\ufeffProject: AI应用大会\\nDES: AI应用创新大会\\nPrice: 200门票\\nPeople: 300\\nLocation: 深圳'), Document(metadata={'source': 'loader.csv', 'row': 3}, page_content='\\ufeffProject: AI 应用咨询服务\\nDES: AI与场景结合\\nPrice: 1000/小时\\nPeople: 50\\nLocation: 香港'), Document(metadata={'source': 'loader.csv', 'row': 4}, page_content='\\ufeffProject: AI项目可研\\nDES: 可行性报告\\nPrice: 20000\\nPeople: 60\\nLocation: 上海')]\n"
     ]
    }
   ],
   "source": [
    "# 加载csv文件\n",
    "from langchain.document_loaders import CSVLoader\n",
    "\n",
    "loader = CSVLoader(file_path=\"loader.csv\", encoding=\"utf-8\")\n",
    "# loader = CSVLoader(file_path=\"loader.csv\", encoding=\"utf-8\", source_column=\"Location\")\n",
    "data = loader.load()\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bf15f694-5cd0-4d48-8e12-00625e6139ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install unstructured\n",
    "!pip install \"unstructured[xlsx]\"\n",
    "!pip install pdfminer.six"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "aade8b73-276c-472a-adca-2b8d80d25033",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 加载目录下excel文件\n",
    "from langchain.document_loaders import DirectoryLoader\n",
    "\n",
    "# 目录下的.html和.rst不会被加载\n",
    "loader = DirectoryLoader(path = \"./file/\", glob=\"*.xlsx\")\n",
    "docs = loader.load()\n",
    "len(docs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d3ec191c-d369-47c6-b174-bd191c97cd64",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 加载html\n",
    "from langchain.document_loaders import UnstructuredHTMLLoader\n",
    "from langchain.document_loaders import BSHTMLLoader\n",
    "\n",
    "# loader = UnstructuredHTMLLoader(\"loader.html\", encoding=\"utf-8\")\n",
    "loader = BSHTMLLoader(\"loader.html\", encoding=\"utf-8\") #只抓取文本信息\n",
    "data = loader.load()\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ce6ebc96-cd9d-4ef5-b46c-e3ce7dfd80b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install jq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "673be8bc-b311-4c2d-bdb2-43ad595d31ce",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Document(metadata={'source': 'D:\\\\py\\\\ai\\\\jupyter\\\\simple_prompt.json', 'seq_num': 1}, page_content='给我讲一个关于{name}的{what}故事')]\n"
     ]
    }
   ],
   "source": [
    "# 加载html\n",
    "from langchain.document_loaders import JSONLoader\n",
    "\n",
    "loader = JSONLoader(\"simple_prompt.json\", jq_schema=\".template\")\n",
    "data = loader.load()\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "804037b3-4d90-4f3f-a3d2-08d9cda7ae23",
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install pypdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0b191c96-a580-4971-8302-f606da71d133",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "page_content='蒂法介绍\n",
      "蒂法· 洛克哈特（⽇语：ティファ・ロックハート，Tifa Rokkuhāto，英语：Tifa \n",
      "Lockhart）为电⼦游戏《最终幻想VII》及《最终幻想VII补完计划》相关作品中的虚构⻆\n",
      "⾊，由野村哲也创作和设计，此后也在多个游戏中客串登场。\n",
      "2014年东京电玩展上，星名美津纪cosplay《最终幻想VII 降临之⼦》中的蒂法· 洛克哈特\n",
      "蒂法是克劳德的⻘梅⽵⻢，两⼈同为尼布鲁海姆出身。在⽶德加经营作为反抗组织“雪崩”根\n",
      "据地的酒馆“第七天堂”，并且是⼩有名⽓的招牌店员。擅⻓格⽃，以拳套为武器。本传7年前\n",
      "克劳德离开故乡从军时，曾许下约定“如果有危机时⼀定会保护她”。与爱丽丝相识之后，两\n",
      "⼈成为好友。第⼀个察觉克劳德记忆混乱的⼈，后来协助精神崩溃的克劳德重新找回真正的⾃\n",
      "⼰。本传的⼤战结束后，依⼤家的期待在战后新⽣的⽶德加再次开设第七天堂（原第七天堂因\n",
      "第柒区圆盘崩塌遭压毁），同时也照顾⼀群受到星痕症候群折磨的孩⼦们。\n",
      "蒂法被《纽约时报》称为“⽹络⼀代”的海报⼥郎，与劳拉· 克罗夫特相⽐，她是电⼦游戏中坚\n",
      "强、独⽴和有吸引⼒的⼥性⻆⾊的典型代表。媒体普遍称赞其实⼒和外表，并称她为游戏世界\n",
      "中最好的⼥性⻆⾊之⼀。\n",
      "在《最终幻想VII》本传中，蒂法年龄20岁、身⾼167cm、⽣⽇5⽉3⽇、⾎型B型、出⽣地尼\n",
      "布尔海姆。\n",
      "登场\n",
      "《最终幻想VII》\n",
      "蒂法在《最终幻想VII》原版中⾸次亮相，是克劳德的⻘梅⽵⻢、第七天堂酒吧的看板娘、极\n",
      "端环境组织“雪崩”成员，该组织反抗巨型企业“神罗”因其⼤量抽取魔晄⽤作动⼒能源。在注\n",
      "意到克劳德的性格改变后，她说服克劳德加⼊雪崩，以密切关注他，并且跟随他追寻游戏中的\n",
      "对⼿萨菲罗斯。她⽆法阻⽌克劳德被萨菲罗斯操纵，在他的精神崩溃后，她帮助克劳德康复，\n",
      "并且两⼈意识到彼此间的相互感觉，最后与伙伴们⼀同击败了萨菲罗斯。[2]\n",
      "在闪回中可知，⼉时的蒂法⼀直是村中⼩孩的⼈⽓王。在⺟亲过世后，思念⺟亲的蒂法决定沿\n",
      "着⼩路⾛到他们故乡尼布尔海姆附近的⼀座⼭上，认为这样就能⻅到过世的⺟亲，原本跟着蒂\n",
      "法的其他⼩孩都在半路上因害怕⽽放弃，唯独克劳德仍坚定的在后⾯跟随，希望能在危机时保\n",
      "护蒂法。然⽽，他们俩都从⼭上跌落受伤，蒂法昏迷了⼀个星期，她的⽗亲认为克劳德对此负\n",
      "有责任[3]，甚为严令禁⽌克劳德再接近蒂法，但蒂法反⽽从此更在意克劳德，两⼈成为要好\n",
      "的玩伴。为了使⾃⼰变得更强⼤，克劳德最终选择离开尼布尔海姆，加⼊神罗，想要成为神罗\n",
      "的精英战⼠“神罗战⼠”（SOLDIER），但后来透露他主要是为了吸引蒂法的注意⼒。离开之\n",
      "前，蒂法与克劳德约定，当蒂法处于困境之中时，克劳德会回来救她。从克劳德离开之后，蒂\n",
      "法便开始留意神罗战⼠的消息，因为神罗战⼠都成为声名远播的知名⼈物，如果克劳德成为神\n",
      "罗战⼠，他的活跃也会⽴刻传回尼布尔海姆。数年后，在萨菲罗斯摧毁了尼布尔海姆之后，克\n",
      "劳德为了救蒂法，被萨菲罗斯刺⾄重伤。蒂法被她的武术教练赞⼲带到安全地带，幸存下来，\n",
      "最终到达⽶德加并遇⻅了“雪崩”的领导⼈巴雷特· 华莱⼠。病愈后，蒂法加⼊了“雪崩”，为\n",
      "了给家乡被毁⼀事报仇。⼀天，她在⽕⻋站遇到了从魔晄炉中逃出来、精神⼀⽚混乱的克劳\n",
      "德，蒂法说服了他为巴雷特⼯作，以保证克劳德的安全以及和克劳德保持紧密关系。这是游戏\n",
      "开始的地⽅。\n",
      "在原版《最终幻想VII》中蒂法与爱丽丝关系友好，但会在某些时候争⻛吃醋，例如在神罗总\n",
      "部营救爱丽丝时，蒂法及巴雷特等⼀⾏失⼿被擒，若克劳德选择关⼼爱丽丝的话蒂法的对话中\n",
      "明显带有妒忌。在重制版中虽然删去这段情节，但保留了这种关系。\n",
      "在《最终幻想VII》的初稿中，蒂法是背景⼈物。她在“雪崩”中的作⽤是在幕后⽀持，在执\n",
      "⾏任务后为所有⼈加油⿎劲，并且对克劳德有特别的关⼼。据推测，她的背上有⼀块⼤的疤' metadata={'source': 'loader.pdf', 'page': 0, 'page_label': '1'}\n"
     ]
    }
   ],
   "source": [
    "# 加载html\n",
    "from langchain.document_loaders import PyPDFLoader\n",
    "\n",
    "loader = PyPDFLoader(\"loader.pdf\")\n",
    "data = loader.load_and_split()\n",
    "print(data[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3e952fe3-12ab-4e49-b198-d73e35c11074",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python (langchain)",
   "language": "python",
   "name": "langchain-env"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
